Apache Derby একটি এমবেডেবল ডেটাবেস সিস্টেম হলেও এটি Client-Server Mode এ কাজ করার ক্ষমতাও রাখে, যেখানে Apache Derby Server এবং Client অ্যাপ্লিকেশন আলাদাভাবে চলে। এই পরিবেশে, সার্ভার এবং ক্লায়েন্ট একে অপরের সাথে নেটওয়ার্কের মাধ্যমে যোগাযোগ করে এবং ডেটাবেস পরিচালনা করে। Client-Server Mode সাধারণত তখন ব্যবহৃত হয় যখন একাধিক ক্লায়েন্টকে একই ডেটাবেসে অ্যাক্সেস দেওয়া হয় বা অ্যাপ্লিকেশন এবং ডেটাবেস একে অপরের থেকে আলাদা থাকে।
Client-Server Mode কনফিগারেশন
Apache Derby Client-Server Mode কনফিগার করতে হলে আপনাকে নিচের ধাপগুলো অনুসরণ করতে হবে।
১. Apache Derby নেটওয়ার্ক সার্ভার চালু করা
প্রথমে, আপনি Apache Derby সার্ভার চালু করতে হবে যা Network Server হিসেবে কাজ করবে। এটি একটি TCP/IP ভিত্তিক নেটওয়ার্ক সার্ভার হবে, যার মাধ্যমে ক্লায়েন্টরা ডেটাবেসে অ্যাক্সেস করতে পারবে।
Windows-এ Network Server চালু করা:
আপনি startNetworkServer.bat ফাইলটি ব্যবহার করে সার্ভার চালু করতে পারেন। এটি সাধারণত Apache Derby ইনস্টলেশনের bin ফোল্ডারে পাওয়া যাবে।
C:\derby\bin\startNetworkServer.bat
Linux/MacOS-এ Network Server চালু করা:
Linux বা MacOS এ, আপনি startNetworkServer.sh স্ক্রিপ্ট ব্যবহার করতে পারেন:
$DERBY_HOME/bin/startNetworkServer.sh
এটি Apache Derby Network Server চালু করবে এবং ডিফল্টভাবে 1527 পোর্টে নেটওয়ার্ক কানেকশন গ্রহণ করবে।
২. ক্লায়েন্ট অ্যাপ্লিকেশন তৈরি করা
ক্লায়েন্ট অ্যাপ্লিকেশন তৈরি করতে হলে, আপনাকে JDBC (Java Database Connectivity) ব্যবহার করতে হবে। ক্লায়েন্ট অ্যাপ্লিকেশন সার্ভারের মাধ্যমে ডেটাবেসে সংযোগ স্থাপন করবে।
ক্লায়েন্ট অ্যাপ্লিকেশন কনফিগারেশন:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class DerbyClient {
public static void main(String[] args) {
try {
// ড্রাইভার লোড
Class.forName("org.apache.derby.client.ClientDriver");
// সার্ভারে ডেটাবেসের সাথে সংযোগ স্থাপন
String url = "jdbc:derby://localhost:1527/myDB;create=true";
Connection conn = DriverManager.getConnection(url);
// স্টেটমেন্ট তৈরি
Statement stmt = conn.createStatement();
stmt.executeUpdate("CREATE TABLE employee (id INT PRIMARY KEY, name VARCHAR(100), age INT)");
System.out.println("Employee টেবিল তৈরি করা হয়েছে!");
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
এখানে, আপনি jdbc:derby://localhost:1527/myDB URL দিয়ে ডেটাবেসের সাথে সংযোগ স্থাপন করবেন, যেখানে:
localhostহল সার্ভারের আইপি বা হোস্টনেম।1527হল ডিফল্ট পোর্ট, তবে আপনি কনফিগারেশনের মাধ্যমে এটি পরিবর্তন করতে পারেন।myDBহল ডেটাবেসের নাম।
৩. ডেটাবেস অপারেশন (SQL Query)
Client-Server Mode এ SQL কুয়েরি একইভাবে পরিচালিত হয় যেমন আপনি Embedded Mode এ করতেন, তবে এখানে কুয়েরি পাঠানো হয় সার্ভারের কাছে এবং সার্ভার তা পরিচালনা করে।
কুয়েরি উদাহরণ:
- ডেটাবেসে ডেটা ইনসার্ট করা:
stmt.executeUpdate("INSERT INTO employee VALUES (1, 'John Doe', 30)");
- ডেটা রিট্রিভ করা:
ResultSet rs = stmt.executeQuery("SELECT * FROM employee");
while (rs.next()) {
System.out.println("ID: " + rs.getInt("id") + ", Name: " + rs.getString("name") + ", Age: " + rs.getInt("age"));
}
৪. ক্লায়েন্টের সাথে সার্ভারের যোগাযোগ
Client-Server Mode এর মধ্যে, ক্লায়েন্ট সার্ভারের সাথে TCP/IP কানেকশনের মাধ্যমে যোগাযোগ করে। ডেটাবেস সার্ভারটি Derby Network Server-এর মাধ্যমে চলতে থাকে, যেখানে সার্ভার ডেটাবেসের সব অপারেশন সম্পাদন করে এবং ক্লায়েন্ট কেবল সার্ভারের কাছে কুয়েরি পাঠায়।
৫. পোর্ট কনফিগারেশন এবং নিরাপত্তা
আপনি derby.properties ফাইলের মাধ্যমে নেটওয়ার্ক সার্ভারের পোর্ট কনফিগার করতে পারেন। ডিফল্ট পোর্ট 1527 হলেও এটি পরিবর্তন করা সম্ভব।
উদাহরণ:
derby.drda.portNumber=1528
এছাড়া, আপনি সার্ভারের সিকিউরিটি ও অ্যাক্সেস কন্ট্রোল কনফিগার করতে পারেন।
৬. ডেটাবেস বন্ধ করা
যখন আপনার কাজ শেষ হয়ে যাবে, তখন আপনি Network Server বন্ধ করতে পারবেন।
Windows-এ বন্ধ করা:
C:\derby\bin\stopNetworkServer.bat
Linux/MacOS-এ বন্ধ করা:
$DERBY_HOME/bin/stopNetworkServer.sh
এটি সার্ভার বন্ধ করে দেবে।
সারাংশ
Apache Derby Client-Server Mode ডেটাবেসের সাথে একাধিক ক্লায়েন্ট সংযোগ স্থাপনের একটি শক্তিশালী পদ্ধতি। এতে সার্ভার এবং ক্লায়েন্ট আলাদাভাবে কাজ করে এবং ডেটাবেস পরিচালনার জন্য নেটওয়ার্কের মাধ্যমে যোগাযোগ স্থাপন করা হয়। এটি সাধারণত বড় বা ডিসেন্ট্রালাইজড অ্যাপ্লিকেশনে ব্যবহৃত হয়, যেখানে একাধিক ক্লায়েন্ট সার্ভারের ডেটাবেসে অ্যাক্সেস করতে পারে।